package webPages;

import modelo.Empleado;

import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.PropertyListView;
import org.apache.wicket.model.CompoundPropertyModel;

import utils.TransformerDisponibilidadesAString;
import applicationModels.ListadoEmpleados;

public class ListadoEmpleadosPage extends BasePage {

	private static final long serialVersionUID = 1L;
	private final ListadoEmpleados model;
	
	public ListadoEmpleadosPage(){
		this.model = new ListadoEmpleados();
		Form<ListadoEmpleados> crearEmpleadoForm = new Form<ListadoEmpleados>("crearEmpleadoForm", new CompoundPropertyModel<ListadoEmpleados>(this.model));

		this.crearTabla(crearEmpleadoForm);
	
		this.agregarAcciones(crearEmpleadoForm);
		this.add(crearEmpleadoForm);
		this.model.actualizarListaEmpleados();
	}
	
	private void crearTabla(Form<ListadoEmpleados> parent) {
		parent.add(new PropertyListView<Empleado>("resultados") {

			private static final long serialVersionUID = 1L;

			@Override
			protected void populateItem(final ListItem<Empleado> item) {
				item.add(new Label("nombre"));
				item.add(new Label("apellido"));
				item.add(new Label("legajo"));
				item.add(new Label("disponibilidades", new TransformerDisponibilidadesAString(item.getModel())));
				
				
				item.add(new Button("editar") {
					@Override
					public void onSubmit() {
						Empleado empleado = item.getModelObject();
						ListadoEmpleadosPage.this.editar(empleado);
					}
				});
			}

		});

	}

	protected void editar(Empleado empleado) {
		EditarEmpleadoPage editar = new EditarEmpleadoPage(empleado);
		this.setResponsePage(editar);
	}

	private void agregarAcciones(Form<ListadoEmpleados> crearEmpleadosForm){
		crearEmpleadosForm.add(new Button("crear"){
			@Override
			public void onSubmit(){
				CrearEmpleadoPage crear = new CrearEmpleadoPage(new Empleado());
				this.setResponsePage(crear);
			}
		});
	}

	
	
	
}
